package com.action.front;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import com.entity.User;
import com.entity.album.Album;
import com.entity.album.AlbumComment;
import com.entity.album.AlbumItems;
import com.entity.album.AlbumItemsComment;
import com.entity.other.ShareType;
import com.opensymphony.xwork2.ActionContext;
import com.service.album.AlbumService;
import com.util.abstractAction.AbstractAction;

public class AlbumAction  extends AbstractAction{

	private static final long serialVersionUID = 7694444061168437397L;
	
	/*********************************attributes********************************/
	
	@Autowired
	private AlbumService albumService;
	
	private String albumName;
	
	private int shareType;
	
	private List<Album> albumList;
	
    //上传图片列表
    private File[] images;

    //上传图片名字列表
    private String[] imagesFileName;
    
  //返回图片地址列表（存入数据库）
    private String[] imageURLList = new String[2];

    
    private List<ShareType> shareTypeList;
    
    private int albumId;
    
    private List<String> albumIndexImg;
    
    private List<AlbumItems> albumItemsList;
    
    private Album album;
    
    private String albumCommentContent;
    
    private String albumItemsCommentContent;
    
    private List<AlbumComment> albumCommentList;
    
    private List<User> userList;
    
    private int albumCommentId;
    
    private List<AlbumItemsComment> albumItemsCommentList;
    
    private Map<Integer, List<AlbumItemsComment>> albumItemsCommentMap;
    
    private int albumItemsId;
    
    private int albumItemsCommentId;
    
    private AlbumItems albumItems;
	
	/*********************************action methods********************************/
   //跳转到图片上传页面
    public String goImageUpload() {
    	try {
    		albumList=albumService.getAllAlbum();
    		shareTypeList=albumService.getAllShareType();
		} catch (Exception e) {
			e.printStackTrace();
		}
        return "go";
    }
    
    //跳转到相片浏览页面
    public String toAlbumItems(){
    	try {
    		albumCommentList=albumService.getAlbumCommentByAlbumId(albumId);
    		userList=albumService.getAllUser();
    		album=albumService.getAlbumById(albumId);
			albumItemsList=albumService.getAlbumItemsByAlbumId(albumId);
		} catch (Exception e) {
			return "404Error";
		}
    	return "toAlbumItems";
    }
    
    //跳转到相册首页
    public String toAlbum(){
    	AlbumItems albumItems=null;
    	try {
			albumList=albumService.getAllAlbum();
			albumIndexImg=new ArrayList<String>();
			for(Album album:albumList){
				if(album.getIndexImgId()!=0){
					albumItems=albumService.getAlbumItemsById(album.getIndexImgId());
					albumIndexImg.add(albumItems.getScaleImgURL());
				}
				else {
					albumIndexImg.add("nullStr");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
    	return "toAlbum";
    }
    
    //跳转到评论模式
    public String toAlbumCommentModel(){
    	List<AlbumItemsComment> albumItemsCommentList=null;
    	try {
	    	albumCommentList=albumService.getAlbumCommentByAlbumId(albumId);
			userList=albumService.getAllUser();
			album=albumService.getAlbumById(albumId);
			albumItemsList=albumService.getAlbumItemsByAlbumId(albumId);
			
			albumItemsCommentMap=new HashMap<Integer, List<AlbumItemsComment>>();
			for(AlbumItems albumItems:albumItemsList){
				albumItemsCommentList=albumService.getAlbumItemsCommentByAlbumItemsId(albumItems.getId());
				if(albumItemsCommentList!=null&&albumItemsCommentList.size()>0)
				   albumItemsCommentMap.put(albumItems.getId(), albumService.getAlbumItemsCommentByAlbumItemsId(albumItems.getId()));
			}
    	}
		catch (Exception e) {
			return "404Error";
		}
    	return "toAlbumCommentModel";
    }
    
    //跳转到相片浏览和美化页面
    public String toViewAlbumItems(){
    	try {
    		userList=albumService.getAllUser();
    		albumItems=albumService.getAlbumItemsById(albumItemsId);
			albumItemsCommentList=albumService.getAlbumItemsCommentByAlbumItemsId(albumItemsId);
		} catch (Exception e) {
		    e.printStackTrace();
		    return "404Error";
		}
    	return "toViewAlbumItems";
    }

    //图片上传主调方法
    public String imageUpload() {
        int size = images.length;
        String path = "album/";
        AlbumItems albumItems=null;
        Date date=new Date();
        try {
            for (int i = 0; i < size; i++) {
               // imageURLList[i] = saveImageFile(images[i], path, imagesFileName[i], 0, 0);
                List<String> l = saveMutilImageFile(images[i], path, imagesFileName[i],
                		new int[]{0,120}, new int[]{0,92});
                imageURLList[0]=l.get(0);
                imageURLList[1]=l.get(1);
                albumItems=new AlbumItems();
                albumItems.setAlbumId(albumId);
                albumItems.setLikeNum(0);
                albumItems.setShareType(shareType);
                albumItems.setUploadDate(date);
                albumItems.setImageURL( imageURLList[0]);
                albumItems.setScaleImgURL(imageURLList[1]);
                
                albumService.saveAlbumItems(albumItems);
            }
            
            return "toProfile";
        } catch (Exception e) { 
            return "error";
        }

    }
    
	//ajax创建一个新相册并返回所有相册
    public void ajax_createAlbum(){
    	Album album=null;
    	try {
    		album=new Album();
    		album.setAlbumName(albumName);
    		album.setLikeNum(0);
    		album.setShareType(shareType);
    		album.setIndexImgId(0);
    		
    		Date date=new Date();
    		album.setCreateDate(date);
			albumService.createAlbum(album);
			
			albumList=albumService.getAllAlbum();
			String str="";
			for (Album al:albumList) {
				str+="<option value='"+al.getId()+"'>"+al.getAlbumName()+"</option>";
			}
			print(str);
		} catch (Exception e) {
			print(false);
		}
    }

    //保存相册评论
    public void ajax_savePinlun(){
    	User user=(User)ActionContext.getContext().getSession().get("user");
    	AlbumComment albumComment=new AlbumComment();
    	albumComment.setAlbumId(albumId);
    	albumComment.setCommentContent(albumCommentContent);
    	
    	Date date=new Date();
    	albumComment.setCommentDate(date);
    	albumComment.setCommentUserId(user.getId());
    	
    	SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm");
        String str="";
    	try {
			albumService.saveAlbumComment(albumComment);
			 str+="{\"date\":" +"\""+ (sdf.format(date)) +"\""+ ",\"commentId\":"+albumComment.getId()+",\"commentUserName\":"+"\""+(user.getRealName())+"\""+"}";
			print(str);
		} catch (Exception e) {
			print(false);
		}
		
    }
    
    //保存相片评论
    public void saveAlbumItemsComment(){
    	User user=(User)ActionContext.getContext().getSession().get("user");
    	AlbumItemsComment albumItemsComment=new AlbumItemsComment();
    	albumItemsComment.setAlbumItemsId(albumItemsId);
    	albumItemsComment.setCommentContent(albumItemsCommentContent);
    	albumItemsComment.setCommentUserId(user.getId());
    	
    	Date date=new Date();
    	SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm");
    	albumItemsComment.setCommentDate(date);
    	String str="";
    	try {
			albumService.saveAlbumItemsComment(albumItemsComment);
			 str+="{\"date\":" +"\""+ (sdf.format(date)) +"\""+ ",\"commentId\":"+albumItemsComment.getId()+",\"commentUserName\":"+"\""+(user.getRealName())+"\""+"}";
			 print(str);
    	} catch (Exception e) {
			print(false);
		}
    }

    //删除相册评论
    public void ajax_delComment(){
    	try {
			albumService.delAlbumCommentById(albumCommentId);
			print(true);
		} catch (Exception e) {
			print(false);
		}
    }
    
    //删除相片评论
    public void ajax_delAlbumItemsComment(){
    	try {
    		albumService.delAlbumItemsCommentById(albumItemsCommentId);
			print(true);
		} catch (Exception e) {
			e.printStackTrace();
			print(false);
		}
    }
    
    /*********************************getter and setter********************************/
	public String getAlbumName() {
		return albumName;
	}

	public void setAlbumName(String albumName) {
		this.albumName = albumName;
	}

	public int getShareType() {
		return shareType;
	}

	public void setShareType(int shareType) {
		this.shareType = shareType;
	}

	public File[] getImages() {
		return images;
	}

	public void setImages(File[] images) {
		this.images = images;
	}

	public String[] getImagesFileName() {
		return imagesFileName;
	}

	public void setImagesFileName(String[] imagesFileName) {
		this.imagesFileName = imagesFileName;
	}

	public String[] getImageURLList() {
		return imageURLList;
	}

	public void setImageURLList(String[] imageURLList) {
		this.imageURLList = imageURLList;
	}

	public List<ShareType> getShareTypeList() {
		return shareTypeList;
	}

	public void setShareTypeList(List<ShareType> shareTypeList) {
		this.shareTypeList = shareTypeList;
	}

	public int getAlbumId() {
		return albumId;
	}

	public void setAlbumId(int albumId) {
		this.albumId = albumId;
	}

	public List<String> getAlbumIndexImg() {
		return albumIndexImg;
	}

	public void setAlbumIndexImg(List<String> albumIndexImg) {
		this.albumIndexImg = albumIndexImg;
	}

	public List<Album> getAlbumList() {
		return albumList;
	}

	public void setAlbumList(List<Album> albumList) {
		this.albumList = albumList;
	}

	public List<AlbumItems> getAlbumItemsList() {
		return albumItemsList;
	}

	public void setAlbumItemsList(List<AlbumItems> albumItemsList) {
		this.albumItemsList = albumItemsList;
	}

	public Album getAlbum() {
		return album;
	}

	public void setAlbum(Album album) {
		this.album = album;
	}

	public String getAlbumCommentContent() {
		return albumCommentContent;
	}

	public void setAlbumCommentContent(String albumCommentContent) {
		this.albumCommentContent = albumCommentContent;
	}

	public List<AlbumComment> getAlbumCommentList() {
		return albumCommentList;
	}

	public void setAlbumCommentList(List<AlbumComment> albumCommentList) {
		this.albumCommentList = albumCommentList;
	}

	public List<User> getUserList() {
		return userList;
	}

	public void setUserList(List<User> userList) {
		this.userList = userList;
	}

	public int getAlbumCommentId() {
		return albumCommentId;
	}

	public void setAlbumCommentId(int albumCommentId) {
		this.albumCommentId = albumCommentId;
	}

	public Map<Integer, List<AlbumItemsComment>> getAlbumItemsCommentMap() {
		return albumItemsCommentMap;
	}

	public void setAlbumItemsCommentMap(
			Map<Integer, List<AlbumItemsComment>> albumItemsCommentMap) {
		this.albumItemsCommentMap = albumItemsCommentMap;
	}

	public int getAlbumItemsId() {
		return albumItemsId;
	}

	public void setAlbumItemsId(int albumItemsId) {
		this.albumItemsId = albumItemsId;
	}

	public String getAlbumItemsCommentContent() {
		return albumItemsCommentContent;
	}

	public void setAlbumItemsCommentContent(String albumItemsCommentContent) {
		this.albumItemsCommentContent = albumItemsCommentContent;
	}

	public int getAlbumItemsCommentId() {
		return albumItemsCommentId;
	}

	public void setAlbumItemsCommentId(int albumItemsCommentId) {
		this.albumItemsCommentId = albumItemsCommentId;
	}

	public List<AlbumItemsComment> getAlbumItemsCommentList() {
		return albumItemsCommentList;
	}

	public void setAlbumItemsCommentList(
			List<AlbumItemsComment> albumItemsCommentList) {
		this.albumItemsCommentList = albumItemsCommentList;
	}

	public AlbumItems getAlbumItems() {
		return albumItems;
	}

	public void setAlbumItems(AlbumItems albumItems) {
		this.albumItems = albumItems;
	}
	
	
}
